package com.itx.gatewayx.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itx.gatewayx.domain.AIConversation;
import com.itx.gatewayx.domain.AIMessage;
import com.itx.gatewayx.domain.AIModel;
import com.itx.gatewayx.domain.dto.AIChatRequest;
import com.itx.gatewayx.domain.dto.AIChatResponse;

import java.util.List;

/**
 * AI服务接口
 */
public interface AIService {

    /**
     * 发送AI对话消息
     *
     * @param userId 用户ID
     * @param request 对话请求
     * @return AI回复
     */
    AIChatResponse sendMessage(Long userId, AIChatRequest request);
    
    /**
     * 获取用户的对话历史
     *
     * @param userId 用户ID
     * @param page 页码
     * @param pageSize 每页条数
     * @return 对话历史分页
     */
    Page<AIMessage> getConversationHistory(Long userId, Integer page, Integer pageSize);
    
    /**
     * 获取指定会话的消息列表
     *
     * @param conversationId 会话ID
     * @param userId 用户ID
     * @return 消息列表
     */
    List<AIMessage> getMessagesByConversationId(Long conversationId, Long userId);
    
    /**
     * 创建新的对话会话
     *
     * @param userId 用户ID
     * @param modelId 模型ID
     * @return 会话信息
     */
    AIConversation createConversation(Long userId, String modelId);
    
    /**
     * 获取所有可用的AI模型
     *
     * @return 模型列表
     */
    List<AIModel> getAvailableModels();
    
    /**
     * 设置用户当前使用的AI模型
     *
     * @param userId 用户ID
     * @param modelId 模型ID
     * @return 是否设置成功
     */
    boolean setUserModel(Long userId, String modelId);
    
    /**
     * 删除指定的消息
     *
     * @param messageId 消息ID
     * @param userId 用户ID
     * @return 是否删除成功
     */
    boolean deleteMessage(Long messageId, Long userId);
    
    /**
     * 清空用户的所有对话历史
     *
     * @param userId 用户ID
     * @return 是否清空成功
     */
    boolean clearHistory(Long userId);
} 